package bite20220329;

class OuterClass{
    public int data1 = 10;
    private int data2 = 20;
    public static int data3 = 30;

    public void method(){
        System.out.println("OuterClass::method");
    }
    /**
     * 静态内部类当中的一些问题：
     * 1.如何实例化静态内部类
     * 2.在静态内部类当中 只能访问外部类的静态成员。
     *      问题：如果要访问外部类的非静态成员   那么怎么访问？
     *      实例化一个外部类
    */
    static class InnerClass{
        public int data4 = 40;
        private int data5 = 50;
        public static int data6 = 60;
        OuterClass out;

        public InnerClass(OuterClass out) {//实例化一个外部类
            this.out = out;
            System.out.println("Innerclass()");
        }
        public void method(){
            //OuterClass out = new OuterClass();
            System.out.println("innerclass的method方法!");
            System.out.println(data3);//只能访问静态外部类
            System.out.println(out.data1 + out.data2);//实例化一个外部类访问
        }
    }
}

public class TestDemo2 {
    public static void main(String[] args) {
        OuterClass.InnerClass innerClass = new OuterClass.InnerClass(new OuterClass());


    }
}
